home *** CD-ROM | disk | FTP | other *** search
-
-
-
- BBBB((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) BBBB((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- B - The Perl Compiler
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- use B;
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- The B module supplies classes which allow a Perl program to
- delve into its own innards. It is the module used to
- implement the "backends" of the Perl compiler. Usage of the
- compiler does not require knowledge of this module: see the
- _O module for the user-visible part. The B module is of use
- to those who want to write new compiler backends. This
- documentation assumes that the reader knows a fair amount
- about perl's internals including such things as SVs, OPs and
- the internal symbol table and syntax tree of a program.
-
- OOOOVVVVEEEERRRRVVVVIIIIEEEEWWWW OOOOFFFF CCCCLLLLAAAASSSSSSSSEEEESSSS
- The C structures used by Perl's internals to hold SV and OP
- information (PVIV, AV, HV, ..., OP, SVOP, UNOP, ...) are
- modelled on a class hierarchy and the B module gives access
- to them via a true object hierarchy. Structure fields which
- point to other objects (whether types of SV or types of OP)
- are represented by the B module as Perl objects of the
- appropriate class. The bulk of the B module is the methods
- for accessing fields of these structures. Note that all
- access is read-only: you cannot modify the internals by
- using this module.
-
- SSSSVVVV----RRRREEEELLLLAAAATTTTEEEEDDDD CCCCLLLLAAAASSSSSSSSEEEESSSS
-
- B::IV, B::NV, B::RV, B::PV, B::PVIV, B::PVNV, B::PVMG,
- B::BM, B::PVLV, B::AV, B::HV, B::CV, B::GV, B::FM, B::IO.
- These classes correspond in the obvious way to the
- underlying C structures of similar names. The inheritance
- hierarchy mimics the underlying C "inheritance". Access
- methods correspond to the underlying C macros for field
- access, usually with the leading "class indication" prefix
- removed (Sv, Av, Hv, ...). The leading prefix is only left
- in cases where its removal would cause a clash in method
- name. For example, GvREFCNT stays as-is since its
- abbreviation would clash with the "superclass" method REFCNT
- (corresponding to the C function SvREFCNT).
-
- BBBB::::::::SSSSVVVV MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- REFCNT
-
- FLAGS
-
-
-
-
-
- Page 1 (printed 10/23/98)
-
-
-
-
-
-
- BBBB((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) BBBB((((3333))))
-
-
-
- BBBB::::::::IIIIVVVV MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- IV
-
- IVX
-
- needs64bits
-
- packiv
-
- BBBB::::::::NNNNVVVV MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- NV
-
- NVX
-
- BBBB::::::::RRRRVVVV MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- RV
-
- BBBB::::::::PPPPVVVV MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- PV
-
- BBBB::::::::PPPPVVVVMMMMGGGG MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- MAGIC
-
- SvSTASH
-
- BBBB::::::::MMMMAAAAGGGGIIIICCCC MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- MOREMAGIC
-
- PRIVATE
-
- TYPE
-
- FLAGS
-
- OBJ
-
- PTR
-
- BBBB::::::::PPPPVVVVLLLLVVVV MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- TARGOFF
-
- TARGLEN
-
- TYPE
-
-
-
-
- Page 2 (printed 10/23/98)
-
-
-
-
-
-
- BBBB((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) BBBB((((3333))))
-
-
-
- TARG
-
- BBBB::::::::BBBBMMMM MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- USEFUL
-
- PREVIOUS
-
- RARE
-
- TABLE
-
- BBBB::::::::GGGGVVVV MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- NAME
-
- STASH
-
- SV
-
- IO
-
- FORM
-
- AV
-
- HV
-
- EGV
-
- CV
-
- CVGEN
-
- LINE
-
- FILEGV
-
- GvREFCNT
-
- FLAGS
-
- BBBB::::::::IIIIOOOO MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- LINES
-
- PAGE
-
- PAGE_LEN
-
- LINES_LEFT
-
-
-
-
- Page 3 (printed 10/23/98)
-
-
-
-
-
-
- BBBB((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) BBBB((((3333))))
-
-
-
- TOP_NAME
-
- TOP_GV
-
- FMT_NAME
-
- FMT_GV
-
- BOTTOM_NAME
-
- BOTTOM_GV
-
- SUBPROCESS
-
- IoTYPE
-
- IoFLAGS
-
- BBBB::::::::AAAAVVVV MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- FILL
-
- MAX
-
- OFF
-
- ARRAY
-
- AvFLAGS
-
- BBBB::::::::CCCCVVVV MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- STASH
-
- START
-
- ROOT
-
- GV
-
- FILEGV
-
- DEPTH
-
- PADLIST
-
- OUTSIDE
-
- XSUB
-
- XSUBANY
-
-
-
-
- Page 4 (printed 10/23/98)
-
-
-
-
-
-
- BBBB((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) BBBB((((3333))))
-
-
-
- BBBB::::::::HHHHVVVV MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- FILL
-
- MAX
-
- KEYS
-
- RITER
-
- NAME
-
- PMROOT
-
- ARRAY
-
- OOOOPPPP----RRRREEEELLLLAAAATTTTEEEEDDDD CCCCLLLLAAAASSSSSSSSEEEESSSS
-
- B::OP, B::UNOP, B::BINOP, B::LOGOP, B::CONDOP, B::LISTOP,
- B::PMOP, B::SVOP, B::GVOP, B::PVOP, B::CVOP, B::LOOP,
- B::COP. These classes correspond in the obvious way to the
- underlying C structures of similar names. The inheritance
- hierarchy mimics the underlying C "inheritance". Access
- methods correspond to the underlying C structre field names,
- with the leading "class indication" prefix removed (op_).
-
- BBBB::::::::OOOOPPPP MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- next
-
- sibling
-
- ppaddr
- This returns the function name as a string (e.g. pp_add,
- pp_rv2av).
-
- desc
- This returns the op description from the global C
- op_desc array (e.g. "addition" "array deref").
-
- targ
-
- type
-
- seq
-
- flags
-
- private
-
-
-
-
-
-
- Page 5 (printed 10/23/98)
-
-
-
-
-
-
- BBBB((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) BBBB((((3333))))
-
-
-
- BBBB::::::::UUUUNNNNOOOOPPPP MMMMEEEETTTTHHHHOOOODDDD
-
- first
-
- BBBB::::::::BBBBIIIINNNNOOOOPPPP MMMMEEEETTTTHHHHOOOODDDD
-
- last
-
- BBBB::::::::LLLLOOOOGGGGOOOOPPPP MMMMEEEETTTTHHHHOOOODDDD
-
- other
-
- BBBB::::::::CCCCOOOONNNNDDDDOOOOPPPP MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- true
-
- false
-
- BBBB::::::::LLLLIIIISSSSTTTTOOOOPPPP MMMMEEEETTTTHHHHOOOODDDD
-
- children
-
- BBBB::::::::PPPPMMMMOOOOPPPP MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- pmreplroot
-
- pmreplstart
-
- pmnext
-
- pmregexp
-
- pmflags
-
- pmpermflags
-
- precomp
-
- BBBB::::::::SSSSVVVVOOOOPPPP MMMMEEEETTTTHHHHOOOODDDD
-
- sv
-
- BBBB::::::::GGGGVVVVOOOOPPPP MMMMEEEETTTTHHHHOOOODDDD
-
- gv
-
- BBBB::::::::PPPPVVVVOOOOPPPP MMMMEEEETTTTHHHHOOOODDDD
-
- pv
-
-
-
-
-
-
- Page 6 (printed 10/23/98)
-
-
-
-
-
-
- BBBB((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) BBBB((((3333))))
-
-
-
- BBBB::::::::LLLLOOOOOOOOPPPP MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- redoop
-
- nextop
-
- lastop
-
- BBBB::::::::CCCCOOOOPPPP MMMMEEEETTTTHHHHOOOODDDDSSSS
-
- label
-
- stash
-
- filegv
-
- cop_seq
-
- arybase
-
- line
-
- FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS EEEEXXXXPPPPOOOORRRRTTTTEEEEDDDD BBBBYYYY BBBB
- The B module exports a variety of functions: some are simple
- utility functions, others provide a Perl program with a way
- to get an initial "handle" on an internal object.
-
- main_cv
- Return the (faked) CV corresponding to the main part of
- the Perl program.
-
- main_root
- Returns the root op (i.e. an object in the appropriate
- B::OP-derived class) of the main part of the Perl
- program.
-
- main_start
- Returns the starting op of the main part of the Perl
- program.
-
- comppadlist
- Returns the AV object (i.e. in class B::AV) of the
- global comppadlist.
-
- sv_undef
- Returns the SV object corresponding to the C variable
- sv_undef.
-
- sv_yes
- Returns the SV object corresponding to the C variable
- sv_yes.
-
-
-
-
- Page 7 (printed 10/23/98)
-
-
-
-
-
-
- BBBB((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) BBBB((((3333))))
-
-
-
- sv_no
- Returns the SV object corresponding to the C variable
- sv_no.
-
- walkoptree(OP, METHOD)
- Does a tree-walk of the syntax tree based at OP and
- calls METHOD on each op it visits. Each node is visited
- before its children. If walkoptree_debug (q.v.) has been
- called to turn debugging on then the method
- walkoptree_debug is called on each op before METHOD is
- called.
-
- walkoptree_debug(DEBUG)
- Returns the current debugging flag for walkoptree. If
- the optional DEBUG argument is non-zero, it sets the
- debugging flag to that. See the description of
- walkoptree above for what the debugging flag does.
-
- walksymtable(SYMREF, METHOD, RECURSE)
- Walk the symbol table starting at SYMREF and call METHOD
- on each symbol visited. When the walk reached package
- symbols "Foo::" it invokes RECURSE and only recurses
- into the package if that sub returns true.
-
- svref_2object(SV)
- Takes any Perl variable and turns it into an object in
- the appropriate B::OP-derived or B::SV-derived class.
- Apart from functions such as main_root, this is the
- primary way to get an initial "handle" on a internal
- perl data structure which can then be followed with the
- other access methods.
-
- ppname(OPNUM)
- Return the PP function name (e.g. "pp_add") of op number
- OPNUM.
-
- hash(STR)
- Returns a string in the form "0x..." representing the
- value of the internal hash function used by perl on
- string STR.
-
- cast_I32(I)
- Casts I to the internal I32 type used by that perl.
-
- minus_c
- Does the equivalent of the -c command-line option.
- Obviously, this is only useful in a BEGIN block or else
- the flag is set too late.
-
- cstring(STR)
- Returns a double-quote-surrounded escaped version of STR
- which can be used as a string in C source code.
-
-
-
- Page 8 (printed 10/23/98)
-
-
-
-
-
-
- BBBB((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) BBBB((((3333))))
-
-
-
- class(OBJ)
- Returns the class of an object without the part of the
- classname preceding the first "::". This is used to turn
- "B::UNOP" into "UNOP" for example.
-
- threadsv_names
- In a perl compiled for threads, this returns a list of
- the special per-thread threadsv variables.
-
- byteload_fh(FILEHANDLE)
- Load the contents of FILEHANDLE as bytecode. See
- documentation for the BBBByyyytttteeeeccccooooddddeeee module in _B::_B_a_c_k_e_n_d for
- how to generate bytecode.
-
- AAAAUUUUTTTTHHHHOOOORRRR
- Malcolm Beattie, mbeattie@sable.ox.ac.uk
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 9 (printed 10/23/98)
-
-
-
-
-
-
- BBBB((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) BBBB((((3333))))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 10 (printed 10/23/98)
-
-
-
-
-
-
-